home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue28 / tiptrix / LISTING7.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1997-11-11  |  1.5 KB  |  57 lines

  1. unit OvrEdit;
  2. interface
  3. uses
  4.   WinProcs,WinTypes,Messages,SysUtils,Classes,Graphics,Controls,Forms,
  5.   Dialogs,StdCtrls,Mask,DBCtrls;
  6. type
  7.   TInsertModeChangeEvent = procedure(Sender:TDBEdit;
  8.     isInsert:Boolean) of object;
  9.   TOvrDBEdit = class(TDBEdit)
  10.   private
  11.     FInsertMode: boolean;
  12.     FOnInsertModeChange: TInsertModeChangeEvent;
  13.     procedure SetInsertMode(value: boolean);
  14.   protected
  15.     procedure KeyDown(var Key: Word; Shift: TShiftState); override;
  16.     procedure KeyPress(var Key: Char); override;
  17.   public
  18.     { Public declarations }
  19.   published
  20.     property InsertMode: boolean
  21.       read FInsertMode write SetInsertMode;
  22.     property OnInsertModeChange: TInsertModeChangeEvent
  23.       read FOnInsertModeChange write FOnInsertModeChange;
  24.   end;
  25.  
  26. procedure Register;
  27.  
  28. implementation
  29.  
  30. procedure TOvrDBEdit.SetInsertMode(value: boolean);
  31. begin
  32.   if FInsertMode <> value then begin
  33.     FInsertMode := value;
  34.     if Assigned(FOnInsertModeChange) then
  35.       FOnInsertModeChange(Self,FInsertMode);
  36.   end;
  37. end;
  38.  
  39. procedure TOvrDBEdit.KeyDown(var Key: Word; Shift: TShiftState);
  40. begin
  41.   inherited KeyDown(Key,Shift);
  42.   if (Key = VK_INSERT) then InsertMode := not InsertMode;
  43. end;
  44.  
  45. procedure TOvrDBEdit.KeyPress(var Key: Char);
  46. begin
  47.   inherited KeyPress(Key);
  48.   if (not InsertMode) and not (Key in [#8,#0]) then SelLength := 1
  49.   else SelLength := 0;
  50. end;
  51.  
  52. procedure Register;
  53. begin
  54.   RegisterComponents('Samples',[TOvrDBEdit]);
  55. end;
  56. end.
  57.